import os

# 输入和输出文件目录
input_dir = r'C:\Users\ASUS\Desktop\2024年新生赛出题\2024年新生赛出题(非大一组)\G题\G题_input'
output_dir = r'C:\Users\ASUS\Desktop\2024年新生赛出题\2024年新生赛出题(非大一组)\G题\G题_output'
os.makedirs(output_dir, exist_ok=True)

# 计算符合三角形条件的组合数
def triangle_number(nums):
    nums.sort()
    count = 0
    N = len(nums)
    
    for pos in range(N - 1, 1, -1):
        left, right = 0, pos - 1
        while left < right:
            if nums[left] + nums[right] > nums[pos]:
                count += right - left
                right -= 1
            else:
                left += 1

    return count

# 处理每个输入文件并生成对应的输出文件
for filename in os.listdir(input_dir):
    if filename.endswith('.in'):
        input_path = os.path.join(input_dir, filename)
        output_path = os.path.join(output_dir, filename.replace('.in', '.out'))

        # 读取输入文件
        with open(input_path, 'r') as f:
            N = int(f.readline().strip())
            nums = list(map(int, f.readline().strip().split()))

        # 计算结果
        result = triangle_number(nums)

        # 写入输出文件
        with open(output_path, 'w') as f:
            f.write(f"{result}\n")

print("所有 .out 文件已生成并保存在指定目录中。")
